home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-02-09 | 753 b | 34 lines | [TEXT/PICN] |
- #
- # M E A N D E R I N G S T R I N G S
- #
-
- # This main procedure accepts specifications for meandering strings
- # from standard input with the alphabet separated from the length by
- # a colon.
-
- procedure main()
- local line, alpha, n
- while line := read() do {
- line ? if {
- alpha := tab(upto(':')) &
- move(1) &
- n := integer(tab(0))
- }
- then write(meander(alpha,n))
- else stop("*** erroneous input ***")
- }
- end
-
- procedure meander(alpha,n)
- local result, t, i, c, k
- i := k := *alpha
- t := n-1
- result := repl(alpha[1],t)
- while c := alpha[i] do {
- if find(result[-t:0] || c,result)
- then i -:= 1
- else {result ||:= c; i := k}
- }
- return result
- end
-